% 清空工作区
clear;
clc;

% 1. 加载主数据文件
load('result08_10.mat');  % 载入数据
discharge_cycles = result08_10(:, 2);  % 提取所有放电循环

% 确保 discharge_cycles 是 cell 数组
if ~iscell(discharge_cycles)
    discharge_cycles = num2cell(discharge_cycles); % 转换为 cell
end


% 2. 初始化容量数组
num_cycles = length(discharge_cycles);  % 放电循环的数量
capacities = zeros(num_cycles, 1);  % 初始化容量数组

% 3. 计算每个放电循环的电池容量
for i = 1:num_cycles
    if isempty(discharge_cycles{i}) || ~ismatrix(discharge_cycles{i})
        continue; % 跳过空数据或格式不正确的数据
    end
    current = discharge_cycles{i}(:, 1);  % 提取电流数据（第一列）
    current = abs(current);  % 取电流的绝对值（确保放电电流为正值）
    time_interval = 1;  % 时间间隔为1秒
    capacity = sum(current) * time_interval / 3600;  % 计算容量并转换为Ah
    capacities(i) = capacity;  % 存储容量值
end

% 4. 加载 results 数据文件
load('dataNa08_10_processed_results.mat');  % 载入处理后的数据

% 确保 results 存在
if ~exist('results', 'var')
    error('变量 "results" 不存在，请检查数据文件。');
end

% 5. 确保 results 至少有 7 列
num_rows = size(results, 1);
num_cols = size(results, 2);

if num_cols < 7
    results(:, 7) = {0};  % 用 cell 形式扩展列
end

% 6. 删除容量矩阵中指定行的数据（如有需要）
% rows_to_delete = [1, 4, 9, 11, 14];  % 要删除的行
% capacities(rows_to_delete) = [];  % 删除容量数据中的指定行

% 7. 更新容量数据到 results 的第 7 列
results(1:length(capacities), 7) = num2cell(capacities);  % 存储容量值

% 8. 保存更新后的 results 数据文件
save('AAAAA', 'results');  % 保存更新后的数据

disp('电池容量计算完成，并已存储到文件的第 7 列。');

